gh-122931 CI for Linux multiarch co-installability#152831
Conversation
a347830 to
3a52cb5
Compare
3a52cb5 to
b84e719
Compare
Duh. Let me store hash manifests instead of storing the installs. |
Do you mean the debug option?
Seems like having another matrix will add 15–16 minutes of CI runtime. |
That's a lot. OK, I'll attempt to include it. |
We are trying to install into a prefix, any absolute path would not necessarily be writeable. e.g. if Python is configured with --libdir=/usr/lib/$(MULTIARCH)/ during a Debian build.
I meant a multiarch libdir and
|
It's part of the main test matrix, now. |
| return False | ||
|
|
||
|
|
||
| def main() -> None: |
There was a problem hiding this comment.
It looks like either here, within compare_trees, or in the CI job (or in both places) there should be a check that >=2 install trees are actually being compared. Right now it looks like compare_trees is happy even with an empty base dir as input. Such drift could fairly easily happen in CI, filenames changes, or hash file download unpacks to the wrong place, etc.
| @@ -35,6 +45,7 @@ jobs: | |||
| runs-on: ${{ inputs.os }} | |||
| timeout-minutes: 60 | |||
| env: | |||
There was a problem hiding this comment.
There's no actual problem right now, but setting SOURCE_DATE_EPOCH might make this more reliable by taking away a potential source of non-relevant drift between builds?
| if internal: | ||
| cflags.append('-DTEST_INTERNAL_C_API=1') | ||
|
|
||
| py_limited_api = limited or abi3t |
There was a problem hiding this comment.
This looks unrelated to the purpose of this PR, but is a correctness fix, so 👍🏼
| description: OS to run the job | ||
| required: true | ||
| type: string |
There was a problem hiding this comment.
This is unrelated but is probably fine provided it's backported into the older branches.
| runs-on: ${{ inputs.os }} | ||
| timeout-minutes: 60 | ||
| env: | ||
| INSTALL_HASHES_FILE: install-hashes-${{ inputs.os }}-${{ case(inputs.free-threading, 't', '')}}${{ case(inputs.debug, 'd', '') }}.json.gz |
There was a problem hiding this comment.
(readability)
| INSTALL_HASHES_FILE: install-hashes-${{ inputs.os }}-${{ case(inputs.free-threading, 't', '')}}${{ case(inputs.debug, 'd', '') }}.json.gz | |
| INSTALL_HASHES_FILE: >- | |
| install-hashes-${{ | |
| inputs.os | |
| }}-${{ | |
| case(inputs.free-threading, 't', '') | |
| }}${{ | |
| case(inputs.debug, 'd', '') | |
| }}.json.gz |
As suggested in this thread, add some CI tooling to ensure that Python continues to be multi-arch co-installable.
Explicitly skip checking
abi3.soandabi3t.soextensions, as they are currently not co-installable (#122931).We extend
reusable-ubuntuto perform an extra set of build+install+hash runs. This required some slightly different configure options to get more co-install-friendly builds. Those configure options broke some existing tests, but the fixes are trivial, and included.From an earlier implementation that didn't use hash-manifests:
Example failure (without
abi3andabi3tignored): https://github.com/stefanor/cpython/actions/runs/28550736484/job/84647793000Example success (with them ignored): https://github.com/stefanor/cpython/actions/runs/28551134448/job/84648971317